/**
 * Project: ameba.biz
 * 
 * File Created at 2015年11月24日
 * $Id$
 * 
 * Copyright 2015 dface.cn Croporation Limited.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of
 * dface Company. ("Confidential Information").  You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into
 * with www.dface.cn
 */
package cn.dface.ameba.biz.service;

import java.util.List;

import cn.dface.ameba.biz.vo.ApplicationApiVo;
import cn.dface.ameba.biz.vo.ApplicationTagVo;
import cn.dface.ameba.biz.vo.ApplicationVersionVo;
import cn.dface.ameba.dal.entity.EnumApiUsage;
import cn.dface.ameba.dal.entity.EnumAppUsage;
import cn.dface.framework.core.page.PageModel;
import cn.dface.framework.core.vo.ResultVo;

/**
 * ApplicationService
 * 
 * @author LVZY
 */
public interface ApplicationService {

    public ApplicationTagVo saveApplicationTag(ApplicationTagVo appTag);

    public List<ApplicationTagVo> getApplicationTag();

    public List<ApplicationTagVo> getApplicationTagByUsage(EnumAppUsage usage);

    public List<ApplicationTagVo> getApplicationTagWithVersionByUsage(EnumAppUsage usage);

    public ResultVo removeApplicationTagById(Integer id);

    public ApplicationVersionVo saveApplicationVersion(ApplicationVersionVo appVersion);

    public List<ApplicationVersionVo> getApplicationVersionByAppTagId(Integer appTagId);

    public ResultVo removeApplicationVersionById(Integer id);

    public ApplicationApiVo saveApplicationApi(ApplicationApiVo appApi);

    public PageModel getPageOfApplicationApiByAppVersionIdAndUsage(Integer appVersionId,
                                                                   EnumApiUsage usage,
                                                                   String fuzzyTitle,
                                                                   Integer pageNo,
                                                                   Integer pageSize);
    
    public Integer getPageCountOfApplicationApiByAppVersionIdAndUsage(Integer appVersionId,
                                                                      EnumApiUsage usage,
                                                                      String fuzzyTitle,
                                                                      Integer pageSize);

    public ResultVo removeApplicationApiById(Integer id);

    public ResultVo deployByAppVersionId(Integer appVersionId);

    public ResultVo getDeployLogByAppVersionId(Integer appVersionId);

}
